package DataStructure;

/**
 * @time: 2021/3/26/026 22:44
 * @author: Zhurunhe
 */
public class DoublelinklistTest {

    public static void main(String[] args) {

        Hero h1=new Hero(1);
        Hero h2=new Hero(2);
        Hero h3=new Hero(3);
        Hero h4=new Hero(4);
        Hero h5=new Hero(5);
        Doublelinklist doublelinklist=new Doublelinklist();
        doublelinklist.AddById(h2);
        doublelinklist.AddById(h5);
        doublelinklist.AddById(h3);
        doublelinklist.AddById(h4);
        doublelinklist.AddById(h1);
        doublelinklist.show();
    }
}
class Doublelinklist{
    private Hero head=new Hero(0);

    public void add(Hero h){
        Hero temp=head;
        while (true){
            if (temp.next==null){
                break;
            }
            temp=temp.next;
        }
        temp.next=h;
        h.pre=temp;
    }
    public void AddById(Hero h){
        Hero temp=head;
        boolean flag=false;
        boolean back=false;
        while (true){
            if (temp.next==null){
                temp.next=h;
                h.pre=temp;
                flag=true;
                back=true;
                break;
            }
            if (temp.id>h.id){
                break;
            }
            if (h.id==temp.id){
                flag=true;
                break;
            }
            temp=temp.next;
        }
        if (flag) {
            if (!back){
                System.out.println(h.id + "员工已在列表中不能添加");
            }

        } else {
            h.pre=temp.pre;
            temp.pre.next=h;
            h.next=temp;
            temp.pre=h;
        }

    }
    public void delete(Hero h){
        Hero temp=head;
        if (head.next==null){
            System.out.println("该列表为空");
            return;
        }
        boolean isExist = false;
        while (true) {
            if (temp.next == null) {
                break;
            }
            if (temp.next.id == h.id) {
                isExist = true;
                break;
            }
            temp = temp.next;
        }
        if (isExist) {
            temp.pre.next=temp.next;
            if(temp.next!=null){
                temp.next.pre=temp.pre;
            }
        } else {
            System.out.println("没有找到该英雄");
        }
    }
    public void show(){
        if (head.next==null){
            System.out.println("该列表为空");
            return;
        }
        Hero temp=head;
        while (true){
            if (temp.next==null){
                break;
            }

            System.out.println(temp.toString());
            temp=temp.next;
        }
    }

}

class Hero{
     int id;
     Hero pre;
     Hero next;

    public Hero(int id){
        this.id=id;
    }
    @Override
    public String toString() {
        return "Hero{" +"id=" + id +'}';
    }
}
